package com.columboid.protocol.syncml.deviceinfo;

import java.util.ArrayList;
import java.util.List;

/**
 * Schema fragment(s) for this class:
 * 
 * <pre>
 * &lt;xs:element xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; name=&quot;CTCap&quot;&gt;
 *   &lt;xs:complexType&gt;
 *     &lt;xs:sequence&gt;
 *       &lt;xs:sequence maxOccurs=&quot;unbounded&quot;&gt;
 *         &lt;!-- Reference to inner class CTCapInner --&gt;
 *       &lt;/xs:sequence&gt;
 *     &lt;/xs:sequence&gt;
 *   &lt;/xs:complexType&gt;
 * &lt;/xs:element&gt;
 * </pre>
 */
public class CTCap {
	private List<CTCapInner> CTCapList = new ArrayList<CTCapInner>();

	/**
	 * Get the list of 'CTCap' element items.
	 * 
	 * @return list
	 */
	public List<CTCapInner> getCTCaps() {
		return CTCapList;
	}

	/**
	 * Set the list of 'CTCap' element items.
	 * 
	 * @param list
	 */
	public void setCTCaps(List<CTCapInner> list) {
		CTCapList = list;
	}

	/**
	 * Schema fragment(s) for this class:
	 * 
	 * <pre>
	 * &lt;xs:sequence xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; maxOccurs=&quot;unbounded&quot;&gt;
	 *   &lt;xs:element ref=&quot;ns:CTType&quot;/&gt;
	 *   &lt;xs:sequence maxOccurs=&quot;unbounded&quot;&gt;
	 *     &lt;!-- Reference to inner class Sequence --&gt;
	 *   &lt;/xs:sequence&gt;
	 * &lt;/xs:sequence&gt;
	 * </pre>
	 */
	public static class CTCapInner {
		private CTType CTType;
		private List<Sequence> sequenceList = new ArrayList<Sequence>();

		/**
		 * Get the 'CTType' element value.
		 * 
		 * @return value
		 */
		public CTType getCTType() {
			return CTType;
		}

		/**
		 * Set the 'CTType' element value.
		 * 
		 * @param CTType
		 */
		public void setCTType(CTType CTType) {
			this.CTType = CTType;
		}

		/**
		 * Get the list of sequence items.
		 * 
		 * @return list
		 */
		public List<Sequence> getSequences() {
			return sequenceList;
		}

		/**
		 * Set the list of sequence items.
		 * 
		 * @param list
		 */
		public void setSequences(List<Sequence> list) {
			sequenceList = list;
		}

		/**
		 * Schema fragment(s) for this class:
		 * 
		 * <pre>
		 * &lt;xs:sequence xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; maxOccurs=&quot;unbounded&quot;&gt;
		 *   &lt;xs:element ref=&quot;ns:PropName&quot;/&gt;
		 *   &lt;xs:choice minOccurs=&quot;0&quot;&gt;
		 *     &lt;!-- Reference to inner class Choice --&gt;
		 *   &lt;/xs:choice&gt;
		 *   &lt;xs:element ref=&quot;ns:DisplayName&quot; minOccurs=&quot;0&quot;/&gt;
		 *   &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
		 *     &lt;!-- Reference to inner class SequenceInner --&gt;
		 *   &lt;/xs:sequence&gt;
		 * &lt;/xs:sequence&gt;
		 * </pre>
		 */
		public static class Sequence {
			private PropName propName;
			private Choice choice;
			private DisplayName displayName;
			private List<SequenceInner> sequenceList = new ArrayList<SequenceInner>();

			/**
			 * Get the 'PropName' element value.
			 * 
			 * @return value
			 */
			public PropName getPropName() {
				return propName;
			}

			/**
			 * Set the 'PropName' element value.
			 * 
			 * @param propName
			 */
			public void setPropName(PropName propName) {
				this.propName = propName;
			}

			/**
			 * Get the choice value.
			 * 
			 * @return value
			 */
			public Choice getChoice() {
				return choice;
			}

			/**
			 * Set the choice value.
			 * 
			 * @param choice
			 */
			public void setChoice(Choice choice) {
				this.choice = choice;
			}

			/**
			 * Get the 'DisplayName' element value.
			 * 
			 * @return value
			 */
			public DisplayName getDisplayName() {
				return displayName;
			}

			/**
			 * Set the 'DisplayName' element value.
			 * 
			 * @param displayName
			 */
			public void setDisplayName(DisplayName displayName) {
				this.displayName = displayName;
			}

			/**
			 * Get the list of sequence items.
			 * 
			 * @return list
			 */
			public List<SequenceInner> getSequences() {
				return sequenceList;
			}

			/**
			 * Set the list of sequence items.
			 * 
			 * @param list
			 */
			public void setSequences(List<SequenceInner> list) {
				sequenceList = list;
			}

			/**
			 * Schema fragment(s) for this class:
			 * 
			 * <pre>
			 * &lt;xs:choice xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; minOccurs=&quot;0&quot;&gt;
			 *   &lt;xs:element ref=&quot;ns:ValEnum&quot; maxOccurs=&quot;unbounded&quot;/&gt;
			 *   &lt;xs:sequence&gt;
			 *     &lt;xs:element ref=&quot;ns:DataType&quot;/&gt;
			 *     &lt;xs:element ref=&quot;ns:Size&quot; minOccurs=&quot;0&quot;/&gt;
			 *   &lt;/xs:sequence&gt;
			 * &lt;/xs:choice&gt;
			 * </pre>
			 */
			public static class Choice {
				private int choiceSelect = -1;
				private static final int VAL_ENUM_CHOICE = 0;
				private static final int DATA_TYPE_CHOICE = 1;
				private List<ValEnum> valEnumList = new ArrayList<ValEnum>();
				private DataType dataType;
				private Size size;

				private void setChoiceSelect(int choice) {
					if (choiceSelect == -1) {
						choiceSelect = choice;
					} else if (choiceSelect != choice) {
						throw new IllegalStateException(
								"Need to call clearChoiceSelect() before changing existing choice");
					}
				}

				/**
				 * Clear the choice selection.
				 */
				public void clearChoiceSelect() {
					choiceSelect = -1;
				}

				/**
				 * Check if ValEnums is current selection for choice.
				 * 
				 * @return <code>true</code> if selection, <code>false</code> if
				 *         not
				 */
				public boolean ifValEnum() {
					return choiceSelect == VAL_ENUM_CHOICE;
				}

				/**
				 * Get the list of 'ValEnum' element items.
				 * 
				 * @return list
				 */
				public List<ValEnum> getValEnums() {
					return valEnumList;
				}

				/**
				 * Set the list of 'ValEnum' element items.
				 * 
				 * @param list
				 */
				public void setValEnums(List<ValEnum> list) {
					setChoiceSelect(VAL_ENUM_CHOICE);
					valEnumList = list;
				}

				/**
				 * Check if DataType is current selection for choice.
				 * 
				 * @return <code>true</code> if selection, <code>false</code> if
				 *         not
				 */
				public boolean ifDataType() {
					return choiceSelect == DATA_TYPE_CHOICE;
				}

				/**
				 * Get the 'DataType' element value.
				 * 
				 * @return value
				 */
				public DataType getDataType() {
					return dataType;
				}

				/**
				 * Set the 'DataType' element value.
				 * 
				 * @param dataType
				 */
				public void setDataType(DataType dataType) {
					setChoiceSelect(DATA_TYPE_CHOICE);
					this.dataType = dataType;
				}

				/**
				 * Get the 'Size' element value.
				 * 
				 * @return value
				 */
				public Size getSize() {
					return size;
				}

				/**
				 * Set the 'Size' element value.
				 * 
				 * @param size
				 */
				public void setSize(Size size) {
					setChoiceSelect(DATA_TYPE_CHOICE);
					this.size = size;
				}
			}

			/**
			 * Schema fragment(s) for this class:
			 * 
			 * <pre>
			 * &lt;xs:sequence xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
			 *   &lt;xs:element ref=&quot;ns:ParamName&quot;/&gt;
			 *   &lt;xs:choice minOccurs=&quot;0&quot;&gt;
			 *     &lt;!-- Reference to inner class Choice --&gt;
			 *   &lt;/xs:choice&gt;
			 *   &lt;xs:element ref=&quot;ns:DisplayName&quot; minOccurs=&quot;0&quot;/&gt;
			 * &lt;/xs:sequence&gt;
			 * </pre>
			 */
			public static class SequenceInner {
				private ParamName paramName;
				private Choice choice;
				private DisplayName displayName;

				/**
				 * Get the 'ParamName' element value.
				 * 
				 * @return value
				 */
				public ParamName getParamName() {
					return paramName;
				}

				/**
				 * Set the 'ParamName' element value.
				 * 
				 * @param paramName
				 */
				public void setParamName(ParamName paramName) {
					this.paramName = paramName;
				}

				/**
				 * Get the choice value.
				 * 
				 * @return value
				 */
				public Choice getChoice() {
					return choice;
				}

				/**
				 * Set the choice value.
				 * 
				 * @param choice
				 */
				public void setChoice(Choice choice) {
					this.choice = choice;
				}

				/**
				 * Get the 'DisplayName' element value.
				 * 
				 * @return value
				 */
				public DisplayName getDisplayName() {
					return displayName;
				}

				/**
				 * Set the 'DisplayName' element value.
				 * 
				 * @param displayName
				 */
				public void setDisplayName(DisplayName displayName) {
					this.displayName = displayName;
				}

				/**
				 * Schema fragment(s) for this class:
				 * 
				 * <pre>
				 * &lt;xs:choice xmlns:ns=&quot;http://protocol.columboid.com/syncml/deviceinfo&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; minOccurs=&quot;0&quot;&gt;
				 *   &lt;xs:element ref=&quot;ns:ValEnum&quot; maxOccurs=&quot;unbounded&quot;/&gt;
				 *   &lt;xs:sequence&gt;
				 *     &lt;xs:element ref=&quot;ns:DataType&quot;/&gt;
				 *     &lt;xs:element ref=&quot;ns:Size&quot; minOccurs=&quot;0&quot;/&gt;
				 *   &lt;/xs:sequence&gt;
				 * &lt;/xs:choice&gt;
				 * </pre>
				 */
				public static class Choice {
					private int choiceSelect = -1;
					private static final int VAL_ENUM_CHOICE = 0;
					private static final int DATA_TYPE_CHOICE = 1;
					private List<ValEnum> valEnumList = new ArrayList<ValEnum>();
					private DataType dataType;
					private Size size;

					private void setChoiceSelect(int choice) {
						if (choiceSelect == -1) {
							choiceSelect = choice;
						} else if (choiceSelect != choice) {
							throw new IllegalStateException(
									"Need to call clearChoiceSelect() before changing existing choice");
						}
					}

					/**
					 * Clear the choice selection.
					 */
					public void clearChoiceSelect() {
						choiceSelect = -1;
					}

					/**
					 * Check if ValEnums is current selection for choice.
					 * 
					 * @return <code>true</code> if selection,
					 *         <code>false</code> if not
					 */
					public boolean ifValEnum() {
						return choiceSelect == VAL_ENUM_CHOICE;
					}

					/**
					 * Get the list of 'ValEnum' element items.
					 * 
					 * @return list
					 */
					public List<ValEnum> getValEnums() {
						return valEnumList;
					}

					/**
					 * Set the list of 'ValEnum' element items.
					 * 
					 * @param list
					 */
					public void setValEnums(List<ValEnum> list) {
						setChoiceSelect(VAL_ENUM_CHOICE);
						valEnumList = list;
					}

					/**
					 * Check if DataType is current selection for choice.
					 * 
					 * @return <code>true</code> if selection,
					 *         <code>false</code> if not
					 */
					public boolean ifDataType() {
						return choiceSelect == DATA_TYPE_CHOICE;
					}

					/**
					 * Get the 'DataType' element value.
					 * 
					 * @return value
					 */
					public DataType getDataType() {
						return dataType;
					}

					/**
					 * Set the 'DataType' element value.
					 * 
					 * @param dataType
					 */
					public void setDataType(DataType dataType) {
						setChoiceSelect(DATA_TYPE_CHOICE);
						this.dataType = dataType;
					}

					/**
					 * Get the 'Size' element value.
					 * 
					 * @return value
					 */
					public Size getSize() {
						return size;
					}

					/**
					 * Set the 'Size' element value.
					 * 
					 * @param size
					 */
					public void setSize(Size size) {
						setChoiceSelect(DATA_TYPE_CHOICE);
						this.size = size;
					}
				}
			}
		}
	}
}
